/*
 * @Description: 
 * @Author: Leequik
 * @Date: 2025-06-25 06:35:10
 * @LastEditTime: 2025-06-25 06:37:42
 * @LastEditors: Leequik
 */
import axios from 'axios';
import { ElMessage } from 'element-plus';
import { v4 as uuidv4 } from "uuid";
 
//ts使用
import { Md5 } from "ts-md5";
 
 
// 创建axios实例
const $http = axios.create({
  // 请求的域名，基本地址，proxy 代理时会将“/api”以及前置字符串会被替换为真正域名
   baseURL: '/api',
  // 跨域请求时发送Cookie
  withCredentials: true, // 视情况而定
  // 超时时间
  timeout: 5000,
  headers: {
    // 设置后端需要的传参类型
    'content-type': 'application/json; charset=utf-8',
    // "Lux-mateApiNonce": uuid, //每次调取接口生成的uuid
    // "Lux-mateApiSignature": mateApi, //md5(method+requestURI+nonce+timestamp+appId+appSecret)
    // "Lux-mateApiTimestamp": timestamp, // 每次调取接口的时间戳（秒级）
  }, 
});
 
// 请求拦截器
$http.interceptors.request.use((config) => {
    // 获取当前时间戳
    const timestamp = parseInt(Date.now() / 1000);
    const uuid =  uuidv4(); // 生成UUID
    console.log(parseInt(Date.now() / 1000),'3333333')
    // console.log(config.method)
    let signStr =config.method + config.url + uuid + timestamp + "Herdsric" + "Herdsric2024"
    console.log('验签',signStr)
    let mateApi = Md5.hashStr(signStr.toUpperCase());
    console.log(mateApi)
    config.headers['Lux-mateApiSignature'] = mateApi
    config.headers['Lux-mateApiNonce'] = uuid //每次调取接口生成的uuid
    config.headers['Lux-mateApiTimestamp'] = timestamp// 每次调取接口的时间戳（秒级）
    config.headers = config.headers || {};
    // if (localStorage.getItem("token")) {
    //     config.headers.token = localStorage.getItem("token") || "";
    // }
    return config;
  });
  
  // 响应拦截器
  $http.interceptors.response.use((response) => {
    return response;
  }, (error) => {
    ResponseProcessing(error);
  });
  
  /**
   * 响应处理
   * @param error 
   * @returns 
   */
  const ResponseProcessing = (error: { response: { state: any; data: any; }; }) => {
    if (error.response) {
      switch (error.response.state) {
        case 401:
          ElMessage.warning("资源没有访问权限！");
          break;
        case 404:
          ElMessage.warning("接口不存在，请检查接口地址是否正确！");
          break;
        case 500:
          ElMessage.warning("内部服务器错误，请联系系统管理员！");
          break;
        default:
          return Promise.reject(error.response.data); // 返回接口返回的错误信息
      }
    } else {
        ElMessage.error("遇到跨域错误，请设置代理或者修改后端允许跨域访问！");
    }
  };
  
  export default $http;